const express=require('express');
const pool = require('../pool.js');
const r=express.Router();
r.post('/reg',(req,res,next)=>{
//获取post请求的数据
let obj=req.body;
console.log(obj);
//验证数据是否为空
if(!obj.uname){
 res.send({code:401,msg:'uanme不能为空'});
 return;
}
 if(!obj.upwd){
 res.send({code:402,msg:'upwd不能为空'});
 return;
}
 if(!obj.email){
 res.send({code:403,msg:'email不能为空'});
 return;
}
 if(!obj.phone){
 res.send({code:404,msg:'phone不能为空'});
 return;
}
//验证手机号码格式
//如果格式不符合
if(!/^1[3-9]\d{9}$/.test(obj.phone)){
  res.send({code:405,msg:'手机号码格式不正确'});
  return;
}
//执行SQL命令，插入数据
 pool.query('insert into xz_user set?',[obj],(err,result)=>{
  if(err){
//如果有错误，抛给下一个错误处理中间件
  next(err);
  return;
  }
  console.log(result);
//如果没有错误
  res.send({code:200,msg:'注册成功'});
 });
});


//2.用户登录(post /login)
//http://127.0.0.1:8080/v1/users/login
r.post('/login',(req,res,next)=>{
  //2.1获取post传递的数据
  let obj = req.body;
  console.log(obj);
  //2.2验证各项数据是否为空
  if(!obj.uname){
    res.send({code: 401,msg: 'uname不能为空'});
	return;
  }
  if(!obj.upwd){
    res.send({code: 402,msg: 'upwd不能为空'});
	return;
  }
  //2.3执行SQL命令
  pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,result)=>{
    if(err){
	  //如果有错误交给下一个中间件处理
	  next(err);
	  return;
	}
	console.log(result);
	//查询的结果是数组，如果是空数组说明登录失败，否则登录成功
	if(result.length === 0){
	  res.send({code: 201,msg: '登录失败'});
	}else{
	  res.send({code: 200,msg: '登录成功'});
	}
  });  
});
//3.修改用户(put /)
//http://127.0.0.1:8080/v1/users/
r.put('/',(req,res,next)=>{
  //3.1获取post传递的数据(uid、email、phone、user_name、gender)
  let obj = req.body;
  console.log(obj);
  //3.2验证各项数据是否为空
  let i = 400;//记录状态码
  for(let k in obj){
 //每次遍历一个属性，状态码加1
 i++
//k 属
//k 属性名   obj[k]  属性值
 //console.log(k, obj[k]);
 //如果属性值为空，提示属性名这项不能为空
 if(!obj[k]){
   res.send({code: i,msg: `${k}不能为空`});
   return;
 }
  }
  //3.3执行SQL命令，修改用户的数据
  pool.query('update xz_user set ? where uid=?',[obj,obj.uid],(err,result)=>{
    if(err){
   //如果有错误，交给下一个错误处理中间件
   next(err);
   return;
 }
 console.log(result);
 //结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则修改成功
 if(result.affectedRows === 0){
   res.send({code: 201,msg: '修改失败'});
 }else{
   res.send({code: 200, msg: '修改成功'});
 }
  });
});

//用户列表(get/)
//地址http//127.0.0.1:8080/v1/users
r.get('/',(req,res,next)=>{
 let obj=req.query;
 console.log(obj);
 //如果页码和每页数据为空设置默认值
 if(!obj.pon){
   obj.pon=1;
 }
 if(!obj.count){
   obj.count=5;
 }
console.log(obj);
//计算开始查询的值（隐式转换为数值型）
let start=(obj.pon-1)*obj.count;
//将每页的数据量转为数值型
let size=parseInt(obj.count);
//执行SQL命令
pool.query('select uid,uname,email,phone from xz_user limit ?,?',[start,size],(err,result)=>{
  if(err){
   next(err);
   return;
  }
 console.log(result);
 res.send({code:200,msg:'查询成功',data:result});
});
});

//删除用户(delete/编号)
//请求方法：delete
//地址：http://127.0.0.1:8080/v1/users
r.delete('/:uid',(req,res,next)=>{
 //获取数据
 let obj=req.params;
 console.log(obj);
 //执行SQL命令
 pool.query('delete from xz_user where uid=?',[obj.uid],(err,result)=>{
  if(err){
   next(err);
   return;
  }
  console.log(result);
  //结果是对象，判断对象下的affectrdRows,如果是0删除 失败，否则删除成功
  if(result.affectedRows===0){
    res.send({code:201,msg:'删除失败'});
  }else{
	res.send({code:200,msg:'删除成功'});
	}
 });
});

//查找用户(get/编号)
r.get('/:uid',(req,res,next)=>{
  //获取路由传参数据
 let obj=req.params
 console.log(obj);
 //执行SQL命令
 pool.query('select*from xz_user where uid=?',[obj.uid],(err,result)=>{
  if(err){
   next(err);
   return;
  }
  console.log(result);
  //
  if(result.length===0){
   res.send({code:201,msg:'该用户不存在'});
  }else{
   res.send({code:200,msg:'查询成功',data:result});
  }
 })
});
module.exports=r;
